 1.HQL操作之--DQL命令
   
   DQL -- Data Query Language 数据查询语言
   SELECT [ALL | DISTINCT] select_expr, select_expr, ...
    FROM table_reference
   [WHERE where_condition]
   [GROUP BY col_list]
   [ORDER BY col_list]
   [CLUSTER BY col_list | [DISTRIBUTE BY col_list] [SORT BY
  col_list]]
   [LIMIT [offset,] rows]
   SQL语句书写注意事项：
   SQL语句对大小写不敏感
   SQL语句可以写一行（简单SQL）也可以写多行(复杂SQL)
   关键字不能缩写，也不能分行
   各子句一般要分行
   使用缩进格式，提高SQL语句的可读性(重要)
   创建表，加载数据
   -- 测试数据 /home/hadoop/data/emp.dat
7369,SMITH,CLERK,7902,2010-12-17,800,,20
7499,ALLEN,SALESMAN,7698,2011-02-20,1600,300,30
7521,WARD,SALESMAN,7698,2011-02-22,1250,500,30
7566,JONES,MANAGER,7839,2011-04-02,2975,,20
7654,MARTIN,SALESMAN,7698,2011-09-28,1250,1400,30
7698,BLAKE,MANAGER,7839,2011-05-01,2850,,30
7782,CLARK,MANAGER,7839,2011-06-09,2450,,10
7788,SCOTT,ANALYST,7566,2017-07-13,3000,,20
7839,KING,PRESIDENT,,2011-11-07,5000,,10
7844,TURNER,SALESMAN,7698,2011-09-08,1500,0,30
7876,ADAMS,CLERK,7788,2017-07-13,1100,,20
7900,JAMES,CLERK,7698,2011-12-03,950,,30
7902,FORD,ANALYST,7566,2011-12-03,3000,,20
7934,MILLER,CLERK,7782,2012-01-23,1300,,10
   -- 建表并加载数据
CREATE TABLE emp (
empno int,
ename string, 
job string, 
mgr int, 
hiredate DATE, 
sal int, 
comm int, 
deptno int
)
row format delimited fields terminated by ",";
   -- 加载数据
   LOAD DATA LOCAL INPATH '/home/hadoop/data/emp.dat' INTO TABLE emp;
   
 2.基本查询
   
   -- 省略from子句的查询
  select 8*888 ;
  select current_date ;
  -- 使用列别名
  select 8*888 product;
  select current_date as currdate;
  -- 全表查询
  select * from emp;
  -- 选择特定列查询
  select ename, sal, comm from emp;
  -- 使用函数
  select count(*) from emp;
  -- count(colname) 按字段进行count，不统计NULL
  select sum(sal) from emp;
  select max(sal) from emp;
  select min(sal) from emp;
  select avg(sal) from emp;
  -- 使用limit子句限制返回的行数
  select * from emp limit 3;
 
 3.where子句
   
   WHERE子句紧随FROM子句，使用WHERE子句，过滤不满足条件的数据；
   where 子句中不能使用列的别名；
   select * from emp where sal > 2000;
   where子句中会涉及到较多的比较运算 和 逻辑运算；
 
 4.比较运算符
   官方文档：https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
   比较运算符          描述
   =、==、<=>          等于
   <>、!=              不等于
   <、<=、>、>=        大于等于、小于等于
   is [not] null       如果A等于NULL，则返回TRUE，反之返回FALSE。使用NOT关键字结果相反。
   in(value1,value2,   匹配列表中的值
   ......)
   LIKE                简单正则表达式，也称通配符模式。'x%' 表示必须以字母 'x' 开
                       头；'%x'表示必须以字母'x'结尾；'%x%'表示包含有字母'x'，可
					   位于字符串任意位置。使用NOT关键字结果相反。
					   % 代表匹配零个或多个字符(任意个字符)；_ 代表匹配一个字符。
   [NOT] BETWEEN       范围的判断，使用NOT关键字结果相反。
    ... AND ...
	RLIKE、            基于java的正则表达式，匹配返回TRUE，反之返回FALSE。匹配
    REGEXP             使用的是JDK中的正则表达式接口实现的，因为正则也依据其中的
	                   规则。例如，正则表达式必须和整个字符串A相匹配，而不是只需
					   与其字符串匹配。
    备注：通常情况下NULL参与运算，返回值为NULL；NULL<=>NULL的结果为true
 
 5.逻辑运算符
   
   就是我们所熟悉的：and、or、not
   -- 比较运算符，null参与运算
   select null=null;
   select null==null;
   select null<=>null;
   -- 使用 is null 判空
   select * from emp where comm is null;
   -- 使用 in
   select * from emp where deptno in (20, 30);
   -- 使用 between ... and ...
   select * from emp where sal between 1000 and 2000;
   -- 使用 like
   select ename, sal from emp where ename like '%L%';
   -- 使用 rlike。正则表达式，名字以A或S开头
   select ename, sal from emp where ename rlike '^(A|S).*';
   